<?php

	session_start();
	
	class LoginHandler
	{
		private $loginSession = "Logged in";
		//Funktion för kontroll om användaren är inloggad.
		//returnerar true om det lyckas annars false.
		public function IsLoggedIn()
		{
			if (isset($_SESSION['$this->$loginSession']))
			{
				return true;
			}
			else 
			{
				return false;
			}
		}
		
		//Funktion för hantering av Inloggning.
		//returnerar true om det lyckas annars false.
		public function DoLogin($userName, $Password)
		{
			switch ($userName)
			{
				case 'user1':
				  	
				  	if ($Password == "AcceptedPassword")
					{
						$_SESSION['$this->$loginSession'] = "logged in";
						return true;	
					}
				  	else 
				  	{
						return false;	  
				  	}
				  	break;
				  
				case 'user2':
					
				  	if ($Password == "AcceptedPassword")
					{
						$_SESSION['$this->$loginSession'] = "logged in";
						return true;	
					}
				  	else 
				  	{
						return false;	  
				  	}
				  	break;
				  
				case 'user3':
				  	
				  	if ($Password == "AcceptedPassword")
					{
						$_SESSION['$this->$loginSession'] = "logged in";
						return true;	
					}
				  	else 
				  	{
						return false;	  
				  	}
					break;
				
				default:
					
				  return false;
			}
			
			/*if ($userName == "AcceptedUserName" && $Password == "AcceptedPassword")
			{
				$_SESSION['login'] = "logged in";
				return true;	
			}
			else 
			{
				return false; 
			}*/
		}
		
		//Funktion för hantering av Utloggning.
		//returnerar true om det lyckas annars false.
		public function DoLogout()
		{
			unset($_SESSION['$this->$loginSession']);
		}
		
		//Funktion för Testning.
		public function Test()
		{
			//Loggar ut användaren.
			//Meddelande att användaren är utloggad visas.
			$this->DoLogout();
			echo "Du är nu utloggad. <br/>";
			
			//T1.1 Testar om användaren fortfarande är inloggad efter att man loggat ut.
			//Om användaren fortfarande är inloggad så visas ett felmeddelande och funktionen returnerar false.
			if ($this->IsLoggedIn() == true)
			{
				echo "Ett fel har uppstått, du borde vara utloggad men är fortfarande inloggad.";
				return false;
			}
			else 
			{
				echo "Test 1.1 ok. <br/>";
			}
			
			//T1.2 Testar om användaren loggas in med felaktiga uppfiter.
			//Om användaren loggas in så visas ett felmeddelande och funktionen returnerar false.
			if ($this->DoLogin("WrongUserName", "WrongPassword") == true)
			{
				echo "Ett fel har uppstått, du blev inloggad med felaktigt login.";
				return false;
			}
			else 
			{
				echo "Test 1.2 ok. <br/>";
			}
			
			//T1.3 Testar om användaren inte loggas in med korrekta uppgifter.
			//Om användaren inte loggas in med korrekta uppgifter visas ett felmeddelande och funktionen returnerar false.
			if ($this->DoLogin("user2", "AcceptedPassword") == false)
			{
				echo "Ett fel har uppstått, du blev inte inloggad med rätt login.";
				return false;
			}
			else 
			{
				echo "Test 1.3 ok. <br/>";
			}
			
			//T1.4 Testar så att användaren nu är inloggad.
			//Om användaren inte är inloggad visas ett felmeddelande och funktionen returnerar false.
			if ($this->IsLoggedIn() == false)
			{
				echo "Ett fel har uppstått, du borde nu ha varit inloggad.";
				return false;		
			}
			else 
			{
				echo "Test 1.4 ok. <br/>";
			}
			
			//Loggar ut användaren.
			//Meddelande visas.
			$this->DoLogout();
			echo "Du är nu utloggad(2). <br/>";
			
			//T1.5 Testar om användaren loggas in med rätt användarnamn men fel lösenord.
			//Om användaren loggas in så visas ett felmeddelande och funktionen returnerar false.
			if ($this->DoLogin("user1", "WrongPassword") == true)
			{
				echo "Ett fel har uppstått, du blev inloggad med rätt användarnamn men fel lösenord.";
				return false;
			}
			else
			{
				echo "Test 1.5 ok. <br/>";
				return true;
			}
			
			
		}
			
	}
?>